package site.lanmushan.framework.authorization.service;


import com.alibaba.fastjson.JSONObject;
import com.nimbusds.jose.JOSEException;
import site.lanmushan.framework.authorization.domain.TokenBo;

import java.security.NoSuchAlgorithmException;
import java.util.List;

/**
 * @author Administrator
 */
public interface TokenService {

    /**
     * 生成token
     * @param obj
     * @param secretKey
     * @param expires
     * @return
     */
    public TokenBo encryptionToken(JSONObject obj, String secretKey, Integer expires);

    /**
     * 生成token
     * @param obj
     * @param expires
     * @return
     */
    public TokenBo encryptionToken(JSONObject obj,  Integer expires);

    /**
     * 生成token
     * @param obj
     * @return
     */
    public TokenBo encryptionToken(JSONObject obj);

    /**
     * 解析token
     * @param token
     * @param secretKey
     * @param t
     * @param <T>
     * @return
     */
    public <T> T decryptToken(String token,String secretKey, Class<T> t);

    /**
     * 解析token
     * @param token
     * @param t
     * @param <T>
     * @return
     */
    public <T> T decryptToken(String token, Class<T> t);

    /**
     * 解析token
     * @param token
     * @param secretKey
     * @param t
     * @param <T>
     * @return
     */
    public <T> T decryptTokenException(String token,String secretKey, Class<T> t);

}
